#ifndef DICT_H
#define DICT_H
#include "hash.h"

typedef char *Word;
typedef char *Def;
typedef struct sDict * Dict;

/* constructor */
Dict 
dict_empty (void);

/* agrega palabra y definicion */
void
dict_add (Dict d, Word w, Def f);

/* pregunta si la palabra est ́ en el diccionario */
Bool
dict_exists (Dict d, Word w);

/* devuelve la definicion de una palabra
   almacenandola en memoria dinamica
   (acordarse de liberarla cuando no se use).
   Llamar solo si dict_exists (d, w)
   si no esta devuelve NULL */
Def
dict_search (Dict d, Word w);

/* saca la palabra y la definicion del diccionario */
void
dict_del (Dict d, Key k);

/* imprime todos los pares (clave, valor) en el diccionario */
void
dict_pprint (Dict d);

/* devuelve la cantidad de definiciones almacenadas */
int
dict_length (Dict d);

/* destructor */
Dict
dict_destroy (Dict d);

/* genera un diccionario en memoria
  desde el archivo nomfile */
Dict
dict_fromFile(char *nomfile);

/* imprime el diccionario en el archivo nomfile */
void
dict_toFile(char *nomfile, Dict d);

void
perfomance (Dict d);

#endif
